🤝 Git и работа в команде ROSA
🎯 Цель раздела
В этом разделе вы:
- освоите основы работы с Git для сопровождения пакетов;
- научитесь синхронизировать локальные изменения с Automated Build Farm (ABF);
- поймёте, как оформлять коммиты, работать с ветками и пул-реквестами;
- узнаете, как проходит ревью и совместная работа в команде ROSA.
🧩 Git в контексте RPM-сопровождения
В экосистеме ROSA каждый пакет хранится в отдельном Git-репозитории на ABF. Репозиторий содержит:
.specфайл,- исходники (ссылки на tarball или патчи),
- changelog,
- служебные файлы (
.abf.yml,.gitignoreи др.).
Каждое изменение пакета фиксируется коммитом и может быть собрано через ABF.
⚙️ Настройка Git
Настройте имя и почту:
git config --global user.name "Ваше имя"
git config --global user.email "you@example.com"
Проверьте конфигурацию:
git config --list
💡 Используйте ту же почту, что и в вашем профиле на ABF.
🧱 Клонирование репозитория пакета
Откройте нужный пакет на сайте https://abf.rosalinux.ru и скопируйте ссылку на Git-репозиторий, например:
git clone https://abf.rosalinux.ru/rosa/hello.git
cd hello
🔄 Структура репозитория пакета
hello/
├── hello.spec
├── sources
├── .abf.yml
├── README.md
└── patches/
| Файл | Назначение |
|---|---|
hello.spec | Инструкции сборки |
sources | Контрольная сумма исходников |
.abf.yml | Параметры сборки ABF |
patches/ | Папка для патчей |
README.md | Документация |
🧰 Создание ветки для изменений
Никогда не работайте в master — создавайте отдельные ветки под каждую задачу:
git checkout -b update-hello-1.2
Вносите изменения (например, обновите Version в .spec), затем:
git add SPECS/hello.spec
git commit -m "Update to version 1.2"
🧩 Правила оформления коммитов
Следуйте единому формату:
<тип>: <краткое описание>
Типы изменений:
update:— обновление версии пакета;fix:— исправление ошибок;spec:— правки в SPEC-файле;patch:— добавление или обновление патчей;cleanup:— рефакторинг, форматирование.
Примеры:
git commit -m "update: bump to version 1.1.2"
git commit -m "spec: fix dependency on glibc-devel"
🚀 Отправка изменений на ABF
После коммитов отправьте ветку в удалённый репозиторий:
git push origin update-hello-1.2
На странице проекта в ABF появится предложение создать Pull Request (PR). PR — это запрос на вливание изменений, который проходит код-ревью.
🧾 Процесс ревью
- Ваш PR проверяет мейнтейнер или старший инженер;
- При необходимости комментируются строки кода или
.spec; - После утверждения PR объединяется в
master; - ABF автоматически запускает сборку пакета.
💡 Ревью — важный этап контроля качества. Даже мелкие правки должны проходить его, чтобы сохранить единообразие.
🧩 Настройка .abf.yml
Файл .abf.yml управляет поведением сборки в ABF. Пример:
sources:
- hello-1.2.tar.gz
patches:
- hello-fix-typo.patch
spec: hello.spec
build:
distribution: rosa2024.1
arch: x86_64
⚙️ Этот файл обязателен для корректной работы сборки через ABF.
🔗 Синхронизация с upstream
Если пакет основан на внешнем проекте (например, Fedora, Debian), регулярно обновляйте изменения из upstream:
git remote add upstream https://src.fedoraproject.org/rpms/hello.git
git fetch upstream
git merge upstream/master
⚠️ После слияния обязательно обновите changelog и пересоберите SRPM.
🧠 Мини-тест для самопроверки
| Вопрос | Ответ |
|---|---|
| Где хранятся пакеты ROSA? | В Git-репозиториях ABF |
| Что такое MR (Merge Request)? | Запрос на вливание изменений после ревью |
| Почему нельзя коммитить в master напрямую? | Чтобы избежать конфликтов и сохранить чистую историю |
Что хранит .abf.yml? | Настройки сборки ABF |
| Как обновить пакет из внешнего проекта? | Через git fetch и merge из upstream |
🧭 Итого
Теперь вы:
- владеете Git-основами для сопровождения пакетов;
- знаете, как работает ABF и ревью-процесс;
- умеете создавать ветки, коммитить, оформлять PR;
- готовы перейти к следующему шагу — автоматизации сборок и CI/CD.
Следующий документ — “CI/CD и автоматизация сборок”, где мы разберём, как организованы сборочные пайплайны в ABF и как автоматизировать публикацию пакетов.